"""
二十二、写一个命令行工具，利用Django 数据库来存储信息
要求：

    1. 通过vim来编辑文档
    2. 文档的第一行作为标题
    3. 文档的第二行之后应有一个空行
    4. 空行之后的所有内容为文档的正文
    5. 把文档标题，正文，当前时间作为记录的三个字段，存储在Django的数据库中
    6. 完成后可以通过这样的命令从命令行启动：

        ./note

    7. 通过命令 ./note view 可以查看内容

"""
import os
from os import path
import sys
import tempfile

import django

base_dir = path.dirname(path.abspath(__file__))
import_dir = path.join(base_dir, 'db')
settings_mod = 'db.settings'
sys.path.insert(0, import_dir)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", settings_mod)
django.setup()

from store.models import Note


def edit():
    """
    1. 打开vim编辑器编辑文件
    2. 把编辑好的文件的内容读取出来，返回给调用者
    """
    f = tempfile.NamedTemporaryFile(mode='w+')
    os.system('vim %s' % f.name)
    f.seek(0)
    text = f.read()
    return text


def view():
    for note in Note.objects.all():
        print('time:', note.time.strftime('%F %T'))
        print(note.title)
        print()
        print(note.content)
        print()


if __name__ == '__main__':
    if len(sys.argv) == 2:
        if sys.argv[1] == 'view':
            view()
            exit(0)

    text = edit()
    lines = text.splitlines()
    title = lines[0].strip()
    content_lines = lines[2:]
    content = '\n'.join(content_lines)
    Note.objects.create(title=title, content=content)
